home *** CD-ROM | disk | FTP | other *** search
/ Amiga Plus 2002 #3 / Amiga Plus CD - 2002 - No. 03.iso / AmiSoft / Hard / Drivr / 3c589.lha / 3c589 / Source / etherlink3.h < prev    next >
C/C++ Source or Header  |  2003-01-03  |  11KB  |  321 lines

  1. /*
  2.  
  3. Copyright (C) 2002 Neil Cafferkey
  4.  
  5. This program is free software; you can redistribute it and/or modify
  6. it under the terms of the GNU General Public License as published by
  7. the Free Software Foundation; either version 2 of the License, or
  8. (at your option) any later version.
  9.  
  10. This program is distributed in the hope that it will be useful, but
  11. WITHOUT ANY WARRANTY; without even the implied warranty of
  12. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  13. General Public License for more details.
  14.  
  15. You should have received a copy of the GNU General Public License
  16. along with this program; if not, write to the Free Software
  17. Foundation, Inc., 59 Temple Place - Suite 330, Boston,
  18. MA 02111-1307, USA.
  19.  
  20. */
  21.  
  22. #ifndef ETHERLINK3_H
  23. #define ETHERLINK3_H
  24.  
  25.  
  26. /* Registers */
  27. /* ========= */
  28.  
  29. /* All Windows */
  30.  
  31. #define EL3REG_COMMAND          14
  32. #define EL3REG_STATUS           14
  33.  
  34. /* Window 0 */
  35.  
  36. #define EL3REG_MAKERID           0
  37. #define EL3REG_PRODUCTID         2
  38. #define EL3REG_ADAPTERID         2
  39. #define EL3REG_CONFIG            4
  40. #define EL3REG_ADDRCONFIG        6
  41. #define EL3REG_RESCONFIG         8   /* also in window 3 */
  42. #define EL3REG_EEPROMCMD        10   /* window 2 has alternative version */
  43. #define EL3REG_EEPROMDATA       12
  44.  
  45. /* Window 1 */
  46.  
  47. #define EL3REG_DATA0             0
  48. #define EL3REG_DATA1             2
  49. #define EL3REG_RXSTATUS          8
  50. #define EL3REG_TIMER            10
  51. #define EL3REG_TXSTATUS         11
  52. #define EL3REG_TXSPACE          12   /* also in window 3 */
  53.  
  54. /* Window 2 */
  55.  
  56. #define EL3REG_ADDRESS0          0
  57. #define EL3REG_ADDRESS1          1
  58. #define EL3REG_ADDRESS2          2
  59. #define EL3REG_ADDRESS3          3
  60. #define EL3REG_ADDRESS4          4
  61. #define EL3REG_ADDRESS5          5
  62. #define EL3REG_SRAMDIAG          6
  63. #define EL3REG_MULTIFUNCCONFIG   8
  64. #define EL3REG_ALTEEPROMCMD     10
  65.  
  66. /* Window 3 */
  67.  
  68. #define EL3REG_ROMCONTROL        4
  69. #define EL3REG_TXRECLAIM         6
  70. #define EL3REG_RXSPACE          10
  71.  
  72. /* Window 4 */
  73.  
  74. #define EL3REG_FIFODIAG          4
  75. #define EL3REG_NETDIAG           6
  76. #define EL3REG_CONTROLLERSTATUS  8
  77. #define EL3REG_MEDIA            10
  78.  
  79. /* Window 5 */
  80.  
  81. #define EL3REG_TXSTARTTHRESH     0
  82. #define EL3REG_TXAVAILTHRESH     2
  83. #define EL3REG_RXEARLYTHRESH     6
  84. #define EL3REG_RXFILTER          8
  85. #define EL3REG_INTMASK          10
  86. #define EL3REG_READZEROMASK     12
  87.  
  88.  
  89. /* (Some) EEPROM data offsets */
  90. /* ========================== */
  91.  
  92. #define EL3EEPROM_ADDRESS0       0
  93. #define EL3EEPROM_ADDRESS1       1
  94. #define EL3EEPROM_ADDRESS2       2
  95. #define EL3EEPROM_PRODUCTID      3
  96. #define EL3EEPROM_MANFDATA0      4
  97. #define EL3EEPROM_MANFDATA1      5
  98. #define EL3EEPROM_MANFDATA2      6
  99. #define EL3EEPROM_MAKERID        7
  100. #define EL3EEPROM_ADDRCONFIG     8
  101. #define EL3EEPROM_RESCONFIG      9
  102. #define EL3EEPROM_ALTADDRESS0   10
  103. #define EL3EEPROM_ALTADDRESS1   11
  104. #define EL3EEPROM_ALTADDRESS2   12
  105. #define EL3EEPROM_SOFTWAREINFO  13
  106. #define EL3EEPROM_COMPATIBILITY 14
  107. #define EL3EEPROM_CHECKSUM      15
  108.  
  109.  
  110. /* EEPROM commands */
  111. /* =============== */
  112.  
  113. #define EL3ECMD_WRITEDISABLE (0x0<<4)
  114. #define EL3ECMD_WRITEALL     (0x1<<4)
  115. #define EL3ECMD_ERASEALL     (0x2<<4)
  116. #define EL3ECMD_WRITEENABLE  (0x3<<4)
  117. #define EL3ECMD_WRITE        (0x4<<4)
  118. #define EL3ECMD_READ         (0x8<<4)
  119. #define EL3ECMD_ERASE        (0xc<<4)
  120.  
  121.  
  122. /* Commands */
  123. /* ======== */
  124.  
  125. #define EL3CMD_GLOBALRESET   (0<<11)
  126. #define EL3CMD_SELECTWINDOW  (1<<11)
  127. #define EL3CMD_STARTCOAX     (2<<11)
  128. #define EL3CMD_RXDISABLE     (3<<11)
  129. #define EL3CMD_RXENABLE      (4<<11)
  130. #define EL3CMD_RXRESET       (5<<11)
  131. #define EL3CMD_RXDISCARD     (8<<11)
  132. #define EL3CMD_TXENABLE      (9<<11)
  133. #define EL3CMD_TXDISABLE    (10<<11)
  134. #define EL3CMD_TXRESET      (11<<11)
  135. #define EL3CMD_REQINT       (12<<11)
  136. #define EL3CMD_ACKINT       (13<<11)
  137. #define EL3CMD_SETINTMASK   (14<<11)
  138. #define EL3CMD_SETZEROMASK  (15<<11)
  139. #define EL3CMD_SETRXFILTER  (16<<11)
  140. #define EL3CMD_SETRXTHRESH  (17<<11)
  141. #define EL3CMD_SETTXTHRESH  (18<<11)
  142. #define EL3CMD_SETTXSTART   (19<<11)
  143. #define EL3CMD_STATSENABLE  (21<<11)
  144. #define EL3CMD_STATSDISABLE (22<<11)
  145. #define EL3CMD_STOPCOAX     (23<<11)
  146. #define EL3CMD_POWERUP      (27<<11)
  147. #define EL3CMD_POWERDOWN    (28<<11)
  148. #define EL3CMD_POWERAUTO    (29<<11)
  149.  
  150.  
  151. /* Interrupt types */
  152. /* =============== */
  153.  
  154. #define EL3INTB_UPDATESTATS 7
  155. #define EL3INTB_REQINT      6
  156. #define EL3INTB_RXEARLY     5
  157. #define EL3INTB_RXCOMPLETE  4
  158. #define EL3INTB_TXAVAIL     3
  159. #define EL3INTB_TXCOMPLETE  2
  160. #define EL3INTB_FAILURE     1
  161. #define EL3INTB_ANY         0
  162.  
  163. #define EL3INTF_UPDATESTATS (1<<EL3INTB_UPDATESTATS)
  164. #define EL3INTF_REQINT      (1<<EL3INTB_REQINT)
  165. #define EL3INTF_RXEARLY     (1<<EL3INTB_RXEARLY)
  166. #define EL3INTF_RXCOMPLETE  (1<<EL3INTB_RXCOMPLETE)
  167. #define EL3INTF_TXAVAIL     (1<<EL3INTB_TXAVAIL)
  168. #define EL3INTF_TXCOMPLETE  (1<<EL3INTB_TXCOMPLETE)
  169. #define EL3INTF_FAILURE     (1<<EL3INTB_FAILURE)
  170. #define EL3INTF_ANY         (1<<EL3INTB_ANY)
  171.  
  172.  
  173. /* Register Details */
  174. /* ================ */
  175.  
  176. /* Configuration Control Register */
  177.  
  178. #define EL3REG_CONFIGB_NOTPCCARD   14
  179. #define EL3REG_CONFIGB_HASAUI      13
  180. #define EL3REG_CONFIGB_HASCOAX     12
  181. #define EL3REG_CONFIGB_HASTP        9
  182. #define EL3REG_CONFIGB_USEINTERNAL  8
  183. #define EL3REG_CONFIGB_RESET        2
  184. #define EL3REG_CONFIGB_ENABLE       0
  185.  
  186. #define EL3REG_CONFIGF_NOTPCCARD   (1<<EL3REG_CONFIGB_NOTPCCARD)
  187. #define EL3REG_CONFIGF_HASAUI      (1<<EL3REG_CONFIGB_HASAUI)
  188. #define EL3REG_CONFIGF_HASCOAX     (1<<EL3REG_CONFIGB_HASCOAX)
  189. #define EL3REG_CONFIGF_HASTP       (1<<EL3REG_CONFIGB_HASTP)
  190. #define EL3REG_CONFIGF_USEINTERNAL (1<<EL3REG_CONFIGB_USEINTERNAL)
  191. #define EL3REG_CONFIGF_RESET       (1<<EL3REG_CONFIGB_RESET)
  192. #define EL3REG_CONFIGF_ENABLE      (1<<EL3REG_CONFIGB_ENABLE)
  193.  
  194. /* Address Configuration Register */
  195.  
  196. #define EL3REG_ADDRCONFIGB_AUTOSELECT  7
  197.  
  198. #define EL3REG_ADDRCONFIGF_AUTOSELECT (1<<EL3REG_ADDRCONFIGB_AUTOSELECT)
  199.  
  200. #define EL3REG_ADDRCONFIG_XCVRMASK 0xc000
  201.  
  202. #define EL3REG_ADDRCONFIG_XCVRTP   (0<<14)
  203. #define EL3REG_ADDRCONFIG_XCVRAUI  (1<<14)
  204. #define EL3REG_ADDRCONFIG_XCVRCOAX (3<<14)
  205.  
  206. /* Status Register */
  207.  
  208. #define EL3REG_STATUSB_CMDINPROGRESS 12
  209.  
  210. #define EL3REG_STATUSF_CMDINPROGRESS (1<<EL3REG_STATUSB_CMDINPROGRESS)
  211.  
  212. #define EL3REG_STATUS_WINDOWMASK     0xe0
  213.  
  214. /* EEPROM Command Register */
  215.  
  216. #define EL3REG_EEPROMCMDB_BUSY 15
  217.  
  218. #define EL3REG_EEPROMCMDF_BUSY (1<<EL3REG_EEPROMCMDB_BUSY)
  219.  
  220. /* RX Status Register */
  221.  
  222. #define EL3REG_RXSTATUSB_INCOMPLETE 15
  223. #define EL3REG_RXSTATUSB_ERROR      14
  224.  
  225. #define EL3REG_RXSTATUSF_INCOMPLETE (1<<EL3REG_RXSTATUSB_INCOMPLETE)
  226. #define EL3REG_RXSTATUSF_ERROR      (1<<EL3REG_RXSTATUSB_ERROR)
  227.  
  228. #define EL3REG_RXSTATUS_ERRORMASK   0x3800
  229. #define EL3REG_RXSTATUS_SIZEMASK    0x07ff
  230.  
  231. /* TX Status Register */
  232.  
  233. #define EL3REG_TXSTATUSB_COMPLETE      7
  234. #define EL3REG_TXSTATUSB_ONSUCCESS     6
  235. #define EL3REG_TXSTATUSB_JABBER        5
  236. #define EL3REG_TXSTATUSB_UNDERRUN      4
  237. #define EL3REG_TXSTATUSB_MAXCOLLISIONS 3
  238. #define EL3REG_TXSTATUSB_OVERFLOW      2
  239.  
  240. #define EL3REG_TXSTATUSF_COMPLETE      (1<<EL3REG_TXSTATUSB_COMPLETE)
  241. #define EL3REG_TXSTATUSF_ONSUCCESS     (1<<EL3REG_TXSTATUSB_ONSUCCESS)
  242. #define EL3REG_TXSTATUSF_JABBER        (1<<EL3REG_TXSTATUSB_JABBER)
  243. #define EL3REG_TXSTATUSF_UNDERRUN      (1<<EL3REG_TXSTATUSB_UNDERRUN)
  244. #define EL3REG_TXSTATUSF_MAXCOLLISIONS (1<<EL3REG_TXSTATUSB_MAXCOLLISIONS)
  245. #define EL3REG_TXSTATUSF_OVERFLOW      (1<<EL3REG_TXSTATUSB_OVERFLOW)
  246.  
  247. /* Net Diagnostic Port Register */
  248.  
  249. #define EL3REG_NETDIAGB_EXTERNALLOOP   15
  250. #define EL3REG_NETDIAGB_ENDECLOOP      14
  251. #define EL3REG_NETDIAGB_CONTROLLERLOOP 13
  252. #define EL3REG_NETDIAGB_FIFOLOOP       12
  253. #define EL3REG_NETDIAGB_TXON           11
  254. #define EL3REG_NETDIAGB_RXON           10
  255. #define EL3REG_NETDIAGB_TXING           9
  256. #define EL3REG_NETDIAGB_NEEDTXRESET     8
  257. #define EL3REG_NETDIAGB_STATSON         7
  258. #define EL3REG_NETDIAGB_TESTLVD         0
  259.  
  260. #define EL3REG_NETDIAGF_EXTERNALLOOP   (1<<EL3REG_NETDIAGB_EXTERNALLOOP)
  261. #define EL3REG_NETDIAGF_ENDECLOOP      (1<<EL3REG_NETDIAGB_ENDECLOOP)
  262. #define EL3REG_NETDIAGF_CONTROLLERLOOP (1<<EL3REG_NETDIAGB_CONTROLLERLOOP)
  263. #define EL3REG_NETDIAGF_FIFOLOOP       (1<<EL3REG_NETDIAGB_FIFOLOOP)
  264. #define EL3REG_NETDIAGF_TXON           (1<<EL3REG_NETDIAGB_TXON)
  265. #define EL3REG_NETDIAGF_RXON           (1<<EL3REG_NETDIAGB_RXON)
  266. #define EL3REG_NETDIAGF_TXING          (1<<EL3REG_NETDIAGB_TXING)
  267. #define EL3REG_NETDIAGF_NEEDTXRESET    (1<<EL3REG_NETDIAGB_NEEDTXRESET)
  268. #define EL3REG_NETDIAGF_STATSON        (1<<EL3REG_NETDIAGB_STATSON)
  269. #define EL3REG_NETDIAGF_TESTLVD        (1<<EL3REG_NETDIAGB_TESTLVD)
  270.  
  271. #define EL3REG_NETDIAG_REVMASK         0x3e
  272.  
  273. /* Media Type and Status Register */
  274.  
  275. #define EL3REG_MEDIAB_TP              15
  276. #define EL3REG_MEDIAB_COAX            14
  277. #define EL3REG_MEDIAB_SQE             12
  278. #define EL3REG_MEDIAB_BEAT            11
  279. #define EL3REG_MEDIAB_POLEREV         10
  280. #define EL3REG_MEDIAB_JABBER           9
  281. #define EL3REG_MEDIAB_UNSQUELCH        8
  282. #define EL3REG_MEDIAB_BEATENABLE       7
  283. #define EL3REG_MEDIAB_JABBERENABLE     6
  284. #define EL3REG_MEDIAB_CRS              5
  285. #define EL3REG_MEDIAB_COLLISION        4
  286. #define EL3REG_MEDIAB_SQESTATSENABLE   3
  287. #define EL3REG_MEDIAB_CRCSTRIPDISABLE  2
  288. #define EL3REG_MEDIAB_LINKLIGHT        0
  289.  
  290. #define EL3REG_MEDIAF_TP              (1<<EL3REG_MEDIAB_TP)
  291. #define EL3REG_MEDIAF_COAX            (1<<EL3REG_MEDIAB_COAX)
  292. #define EL3REG_MEDIAF_SQE             (1<<EL3REG_MEDIAB_SQE)
  293. #define EL3REG_MEDIAF_BEAT            (1<<EL3REG_MEDIAB_BEAT)
  294. #define EL3REG_MEDIAF_POLEREV         (1<<EL3REG_MEDIAB_POLEREV)
  295. #define EL3REG_MEDIAF_JABBER          (1<<EL3REG_MEDIAB_JABBER)
  296. #define EL3REG_MEDIAF_UNSQUELCH       (1<<EL3REG_MEDIAB_UNSQUELCH)
  297. #define EL3REG_MEDIAF_BEATENABLE      (1<<EL3REG_MEDIAB_BEATENABLE)
  298. #define EL3REG_MEDIAF_JABBERENABLE    (1<<EL3REG_MEDIAB_JABBERENABLE)
  299. #define EL3REG_MEDIAF_CRS             (1<<EL3REG_MEDIAB_CRS)
  300. #define EL3REG_MEDIAF_COLLISION       (1<<EL3REG_MEDIAB_COLLISION)
  301. #define EL3REG_MEDIAF_SQESTATSENABLE  (1<<EL3REG_MEDIAB_SQESTATSENABLE)
  302. #define EL3REG_MEDIAF_CRCSTRIPDISABLE (1<<EL3REG_MEDIAB_CRCSTRIPDISABLE)
  303. #define EL3REG_MEDIAF_LINKLIGHT       (1<<EL3REG_MEDIAB_LINKLIGHT)
  304.  
  305.  
  306. /* Command parameters */
  307. /* ================== */
  308.  
  309. #define EL3CMD_SETRXFILTERB_UCAST 0
  310. #define EL3CMD_SETRXFILTERB_MCAST 1
  311. #define EL3CMD_SETRXFILTERB_BCAST 2
  312. #define EL3CMD_SETRXFILTERB_PROM  3
  313.  
  314. #define EL3CMD_SETRXFILTERF_UCAST (1<<EL3CMD_SETRXFILTERB_UCAST)
  315. #define EL3CMD_SETRXFILTERF_MCAST (1<<EL3CMD_SETRXFILTERB_MCAST)
  316. #define EL3CMD_SETRXFILTERF_BCAST (1<<EL3CMD_SETRXFILTERB_BCAST)
  317. #define EL3CMD_SETRXFILTERF_PROM  (1<<EL3CMD_SETRXFILTERB_PROM)
  318.  
  319.  
  320. #endif
  321.